package com.luhan.lhframe.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by LuHan on 2015/12/31.
 * DBHelper用法三步走：1.创建表名 2.建表语句 3.用db.execSQL()执行建表语句
 * 操作数据库的使用方法参照TestDao，别忘了要创建实体类，且实体类字段名与表的属性字段名对应比较好操作。
 */
public class DBHelper extends SQLiteOpenHelper {
    /**
     * 数据库名
     */
    private final static String DB_NAME = "yysscj.db";
    /**
     * 版本号 若更新数据库 ，在下面onUpgrade方法里面比较版本号，去执行语句。onCreate方法中创建表，
     * 只在当数据库创建时执行（也就是说第一次调用数据的时候调用一次，之后都不会再走了）
     */
    private final static int VERSION = 1;

    /*----------------------------------表名 和 建表语句写在一起方便阅读----------------------------------*/
    /**
     * 表名：测试
     */
    public final static String TABLE_TEST = "test";
    private final static String CREATE_TABLE_TEST = "create table IF NOT EXISTS " + TABLE_TEST + "(" +
            "id integer primary key autoincrement," +//id
            "stmc varchar(20)," +//
            "czwmj varchar(20))";//

    private Context context;

    //自带的构造方法
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        this.context = context;
    }

    //为了每次构造时不用传入dbName和版本号，自己得新定义一个构造方法
    public DBHelper(Context cxt) {
        this(cxt, DB_NAME, null, VERSION);//调用上面的构造方法
    }

    //版本变更时
    public DBHelper(Context cxt, int version) {
        this(cxt, DB_NAME, null, version);
    }

    //当数据库创建的时候调用
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_TEST);

        /**
         * 若需要初始化数据，可以在这直接插入数据库中。
         * 从资源文件中获取数据
         */
        /*String[] goods_type = this.context.getResources().getStringArray(R.array.goods_type);
        List<String> list = Arrays.asList(goods_type);
        for (int i = 0; i < list.size(); i++) {
            db.execSQL("INSERT INTO goods_type(name) VALUES('" + list.get(i) + "');");
        }*/
    }

    /**
     * 版本更新时调用
     * 这里注意：更新到第几个版本，随后的版本中若有更新，在其之前的各个版本都要写出新的执行语句，
     * 因为你无法确定用户手中装的数据库是哪一个版本的
     */
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        for (int i = oldVersion; i <= newVersion; i++) {
            switch (i) {
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    break;
                case 6:
                    break;
                case 7:
                    break;
                case 8:
                    break;
                case 9:
                    break;
                default:
                    break;
            }
        }
    }
}
